cmake_minimum_required(VERSION 3.14)
project(Morden_C++)

set(CMAKE_CXX_STANDARD 17)

add_executable(heap RAII/heap.cpp)
add_executable(stack RAII/stack.cpp)
add_executable(RAII RAII/RAII.cpp)
add_executable(RAII_fstram RAII/RAII_fstram.cpp)

add_executable(auto_scope smart_ptr/auto_scope.cpp)
add_executable(unique_ptr smart_ptr/unique_ptr.cpp)
add_executable(unique_ptr_U smart_ptr/unique_ptr_U.cpp)
add_executable(shared_ptr smart_ptr/shared_ptr.cpp)

add_executable(reference reference/reference.cpp)
add_executable(forward reference/forward.cpp)
add_executable(collapses reference/collapses.cpp)
add_executable(lifetime reference/lifetime.cpp)
add_executable(dontreturnReference reference/don'treturnReference.cpp)

add_executable(container container1/container.cpp)
add_executable(cont container2/hash.cpp)
add_executable(vector_l container1/vector_l.cpp)
add_executable(priority_queue container2/priority_queue.cpp)
add_executable(relacontainer container2/relacontainer.cpp)
add_executable(unorder container2/unorder.cpp)
add_executable(array container2/array.cpp)
add_executable(exception exception/exception.cpp)


add_executable(returnObj returnObj/returnObj1.cpp)
add_executable(returnObj_add returnObj/returnObj2.cpp)
add_executable(returnObj3 returnObj/returnObj3.cpp)
add_executable(returnObj4 returnObj/returnObj4.cpp)
add_executable(returnObj5 returnObj/returnObj5.cpp)
add_executable(rvonrvo returnObj/all.cpp)

add_executable(literal literalAssert/literal.cpp)
add_executable(assert literalAssert/assert.cpp)
add_executable(default_delete literalAssert/default_delete.cpp)
add_executable(overridefinal literalAssert/overridefinal.cpp)


add_executable(SFINAE "SFINAE/SFINAE.cpp")
add_executable(serialize "SFINAE/sfinae paper/serialize.cpp")
add_executable(hana "SFINAE/sfinae paper/hana.cpp")
add_executable(overload "SFINAE/sfinae paper/overload1.cpp")
add_executable(pSFINAE "SFINAE/sfinae paper/p1SFINAE.cpp")
add_executable(p1SFINAE "SFINAE/sfinae paper/p2SFINAE.cpp")
add_executable(sizeof1 "SFINAE/sfinae paper/sizeof1.cpp")
add_executable(sizeof2 "SFINAE/sfinae paper/sizeof2.cpp")
add_executable(combining "SFINAE/sfinae paper/combiningAndGenius.cpp")
add_executable(overload2 "SFINAE/sfinae paper/overload2.cpp")
add_executable(combining1 "SFINAE/sfinae paper/timeGenius.cpp")
add_executable(decltype "SFINAE/sfinae paper/decltype.cpp")
add_executable(auto "SFINAE/sfinae paper/auto.cpp")
add_executable(constexpr "SFINAE/sfinae paper/constexpr.cpp")
add_executable(blending "SFINAE/sfinae paper/blending1.cpp")
add_executable(blending2 "SFINAE/sfinae paper/blending2.cpp")
add_executable(lambda "SFINAE/sfinae paper/lambda.cpp")
add_executable(is_valid "SFINAE/sfinae paper/is_valid.cpp")
add_executable(fis_valid "SFINAE/sfinae paper/fis_valid.cpp")
add_executable(packis_valid "SFINAE/sfinae paper/packis_valid.cpp")


add_executable(test3 constexpr/test3.cpp)
add_executable(sqrt constexpr/sqrt.cpp)
